今天,要來學習 to-do app 中的 Action
先在 js 資料夾下創建一個 actions 資料夾,裡面新增一個 TodoActions.js
在 action 裡,我們需要的就是 dispatcher
因此第一行先把 dispather 引入
import dispatcher from "../dispatcher";
createTodo functionES5 的寫法會是這樣:
export default{
createTodo: function(){
}
}
而 ES6 的寫法合併成一行,精簡許多:
export function createTodo() {
}
當我們新增一個 to-do text 時,我們會把它 dispatch 到一個 action 或 event,在 createTodo 中加上 dispatcher,要傳的屬性值為 text
export function createTodo(text) {
dispatcher.dispatch({
type: "CREATE_TODO",
text,
});
}
刪除的 function 也是做同樣的事情,type 改成 "DELETE_TODO",傳遞的屬性值為要刪除的 to-do 事件的 id。
export function deleteTodo(id) {
dispatcher.dispatch({
type: "DELETE_TODO",
id,
});
}
在 Todo component 裡 import 剛剛寫的 Action
import * as TodoActions from "../actions/TodoActions";
接著在要渲染的內容裡放上 create button
<button onClick={this.reloadTodos.bind(this)}>Reload!</button>
用 onClick 去綁定 create function
測試綁定 createTodo 結果
createTodo(){
TodoActions.createTodo(Date.now());
}

未完。。。